The invention relates generally to grid computing and more particularly to a system and method for dynamically allocating resources in an enterprise computing grid.
Enterprises typically use their computational resources in various modes, such as, in an interactive mode or in a batch mode, depending on the particular lifecycle stage of the application being executed on the grid. In general, enterprise grids allocate separate resources for interactive and batch mode usages. These usage modes may sometimes conflict with each other, since the resource requirements for interactive usage are generally more rigorous, immediate and sometimes low volume as compared to the usually higher volume and temporally less rigorous demands of large-scale parallel batch executions.
As will be appreciated by those skilled in the art, a batch execution refers to a process by which users submit a job via a web interface or a front end, or a script file of instructions. The instructions notify an executing machine of a location of the input files, the executable and the output files along with job status information. While many variants of this scheme exist, the common feature of batch jobs is that once a batch job is submitted, users do not have control over the execution of the job except for terminal instructions such as to interrupt or suspend the job. Interactive jobs, on the other hand, are jobs in which a user is able to give frequent inputs to the running application, and obtain frequent outputs from the application. In effect, users running interactive jobs have a capability to communicate with an application at near real time speeds. Furthermore, jobs may be generally characterized by a spectrum of response times, in which purely batch and purely interactive jobs represent the extremes. Interactive jobs, in general, require to be scheduled and executed immediately and the impact they create on the resource workload on a grid is in proportion to the number of jobs submitted in the grid. On the other hand, batch jobs typically need to be queued and executed serially, thereby having a lesser impact on the resource workload on the grid.
It would therefore be desirable to develop an enterprise computing grid system that enables the dynamic allocation of computational resources needed for the execution of jobs with varying degrees of batch and interactive characteristics, based on the computational demands of applications that are in various stages of an application development life cycle.